/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package export.xml;

import connexion.Connexion;
import entite.*;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

/**
 *
 * @author asall
 */
public class ExportXML {
   static Connexion con= new Connexion();
    
     public ExportXML(int idDiplome){
        Element racine = new Element("diplome");
        Document doc= new Document(racine);
        peuplerDoc(racine,idDiplome);
        exporter(doc);
 }

    
    public static void exporter(Document document) {
    try{
        XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
        FileOutputStream fout = new FileOutputStream("ExportXML.xml"); 
        sortie.output(document, fout); 
        fout.close(); 
        sortie.output(document, System.out);
        }
    catch (Exception ex){
    }
}
    public static void peuplerDoc(Element racine,int idDiplome){
        Diplome dip= new Diplome();
        Element libelle = new Element("libelle").setText(dip.getLibelle(idDiplome));
        racine.addContent(libelle);
        Element effectif = new Element("effectif").setText(dip.getEffectif(idDiplome));
        racine.addContent(effectif);
        Element codeLmd = new Element("code-lmd2").setText(dip.getCodeLmd(idDiplome));
        racine.addContent(codeLmd);
        Element typeDiplom = new Element("type-diplome").setText(dip.getTypeDiplome(idDiplome));
        racine.addContent(typeDiplom );   
        elementUfr(racine,idDiplome);
        elementMention(racine,idDiplome);
        elementPersonnel(racine,idDiplome);
        elementCoresponsable(racine,idDiplome);
        elementValidationHist(racine,idDiplome);
        elementParcoursAdm(racine,idDiplome);
       }
    
        public static void elementUfr(Element racine,int idDiplome){
            Ufr ufr=new Ufr();
            Element ufrElement = new Element("ufr");
            Element codeUfr = new Element("code").setText(ufr.getCodeUfr(idDiplome));
            ufrElement.addContent(codeUfr);
            Element libelleLong = new Element("libelle").setText(ufr.getLibelleLong(idDiplome));
            ufrElement.addContent(libelleLong);
            Element libelleCourt = new Element("libelle-court").setText(ufr.getLibelleCourt(idDiplome));
            ufrElement.addContent(libelleCourt);
            Element domaine = new Element("domaine");
            Element codeDom=new Element("code-domaine").setText(ufr.getCodeDomaine(idDiplome));
            domaine.addContent(codeDom);
            Element libelleDom=new Element("libelle-domaine").setText(ufr.getLibelleDomaine(idDiplome));
            domaine.addContent(libelleDom);
            ufrElement.addContent(domaine);            
            racine.addContent(ufrElement);
        
        }
        public static void elementMention(Element racine,int idDiplome){
            Mention mention= new Mention();
            Element mentionElement=new Element("mention");
            Element code= new Element("code-mention").setText(mention.getCodeMention(idDiplome));
            mentionElement.addContent(code);
            Element libelle= new Element("libelle").setText(mention.getLibelleMention(idDiplome));
            mentionElement.addContent(libelle);
            Element domaine = new Element("domaine");
            Element codeDom=new Element("code-domaine").setText(mention.getCodeDom(idDiplome));
            domaine.addContent(codeDom);
            Element libelleDom=new Element("libelle-domaine").setText(mention.getLibelleDom(idDiplome));
            domaine.addContent(libelleDom);
            mentionElement.addContent(domaine);
            racine.addContent(mentionElement);
        }
      public static void elementPersonnel(Element racine,int idDiplome){
            Personnel per=new Personnel();
            Element responsable= new Element("responsable");
            Element numHar= new Element("num-harpege").setText(per.getNumHarpege(idDiplome));
            responsable.addContent(numHar);
            Element nom= new Element("nom").setText(per.getNom(idDiplome));
            responsable.addContent(nom);
            Element prenom= new Element("prenom").setText(per.getPrenom(idDiplome));
            responsable.addContent(prenom);
            Element ufr = new Element("ufr");
            Element codeUfr= new Element("code").setText(per.getCodeUfr(idDiplome));
            ufr.addContent(codeUfr);
            Element libelle= new Element("libelle").setText(per.getLibelle(idDiplome));
            ufr.addContent(libelle);
            Element libelleCourt= new Element("libelle-court").setText(per.getLibelleCourt(idDiplome));
            ufr.addContent(libelleCourt);        
            responsable.addContent(ufr);
            racine.addContent(responsable);
   }
       public static void elementValidationHist(Element racine,int idDiplome){
           ValidationHistorique valid=new ValidationHistorique();
           Element valHist= new Element("validation-historique");
           Element statut= new Element("statut").setText(valid.getStatut(idDiplome));
           valHist.addContent(statut);
           Element dateva= new Element("date-validation").setText(valid.getDate(idDiplome));
           valHist.addContent(dateva);
           Element perVal= new Element("personne-validant");
           Element numHar=new Element("num-harpege").setText(valid.getNumResponsable(idDiplome));
           perVal.addContent(numHar);
           Element nom = new Element("nom").setText(valid.getNomResponsable(idDiplome));
           perVal.addContent(nom);
           Element prenom= new Element("prenom").setText(valid.getPrenomResponsable(idDiplome));
           perVal.addContent(prenom);
           valHist.addContent(perVal);
           Element ufr =new Element("ufr");
           Element codeUfr=new Element("code").setText(valid.getCodeUfrResponsable(idDiplome));
           ufr.addContent(codeUfr);
           Element nomUfr=new Element("libelle").setText(valid.getNomUfrResponsable(idDiplome));
           ufr.addContent(nomUfr);
           Element nomCourtUfr= new Element("libelle-court").setText(valid.getNomCourtUfrResponsable(idDiplome));
           ufr.addContent(nomCourtUfr);
           perVal.addContent(ufr);
           racine.addContent(valHist);
      }
    public static void elementParcoursAdm(Element racine,int idDiplome){ 
          ParcoursAdmin par=new ParcoursAdmin();
          ArrayList<ParcoursAdmin> listepar=par.listeParcoursAdm(idDiplome);
          Iterator it = listepar.iterator(); 
           while(it.hasNext()){
               Element parcoursAd= new Element("parcours-admin");
               ParcoursAdmin parAd= (ParcoursAdmin)it.next();
               Element libelle= new Element("libelle").setText(parAd.libelle);
               Element type=new Element("type").setText(parAd.type);
               Element pourcentage=new Element("pourcentage").setText(parAd.pourcentage);
               parcoursAd.addContent(libelle);
               parcoursAd.addContent(type);
               parcoursAd.addContent(pourcentage);
               Personnel per= parAd.responsable;
               Element responsable=new Element("responsable");
               Element num =new Element("num-harpege").setText(per.numhar);
               Element nom=new Element("nom").setText(per.nom);
               Element prenom= new Element("prenom").setText(per.prenom);
               responsable.addContent(num);
               responsable.addContent(nom);
               responsable.addContent(prenom);
               parcoursAd.addContent(responsable);
               
               ArrayList<Semestre> listeSemestre= parAd.semestre;
                Iterator i= listeSemestre.iterator();
                while(i.hasNext()){
                    Semestre semes= (Semestre)i.next();
                    Element semestre= new Element("semestre");
                    Element libelleSem=new Element("libelle").setText(semes.libelle);
                    semestre.addContent(libelleSem);
                    ListeUe listeUe= semes.listeUes;
                    Element listeUeEl = new Element("listeUes");
                    listeUeEl.setAttribute("minChoix",listeUe.minChoix );
                    listeUeEl.setAttribute("maxChoix",listeUe.maxChoix );
                    ArrayList<Ue> ues=listeUe.eus; 
                      
                    Iterator iUe= ues.iterator();
                        while(iUe.hasNext()){
                           Element ueEl= new Element("ue"); 
                           Ue uni= (Ue)iUe.next();
                           Element libelleUe= new Element("libelle").setText(uni.libelle);
                           Element pourc=new Element("pourcentage").setText(uni.pourcentage);
                           ueEl.addContent(libelleUe);
                           ueEl.addContent(pourc);
                           ListeEc listeEc= uni.ecs;
                           Element listEc=new Element("listeEcs");
                           listEc.setAttribute("minChoix", listeEc.minChoix);
                           listEc.setAttribute("maxChoix", listeEc.maxChoix);
                           Element libLisetEc= new Element("libelle").setText(listeEc.libelle);
                           listEc.addContent(libLisetEc);
                           ueEl.addContent(listEc);
                           ArrayList<Ec> ecs= listeEc.ecs;
                            Iterator iec= ecs.iterator();
                            while(iec.hasNext()){
                                Ec ec= (Ec)iec.next();
                                Element ecEl= new Element("ec");
                                Element codeEc= new Element("code-lmd2").setText(ec.codeLmd);
                                ecEl.addContent(codeEc);
                                Element libEc= new Element("libelle").setText(ec.libelle);
                                ecEl.addContent(libEc);
                                Element nbHCM= new Element("nb-heures-cm").setText(ec.nbheuresCm);
                                ecEl.addContent(nbHCM);
                                Element nbHTD= new Element("nb-heures-td").setText(ec.nbHeuresTd);
                                ecEl.addContent(nbHTD);
                                Element nbHTP= new Element("nb-heures-tp").setText(ec.nbheuresTp);
                                ecEl.addContent(nbHTP);
                                Element nbCred= new Element("nb-credit").setText(ec.nbCredits);
                                ecEl.addContent(nbCred);
                                Element mut= new Element("mutualisable").setText(ec.mutualisable);
                                ecEl.addContent(mut);
                                Element pourcen= new Element("pourcentage").setText(ec.pourcentage);
                                ecEl.addContent(pourcen);
                                Element eff= new Element("effectif").setText(ec.effectif);
                                ecEl.addContent(eff);
                                listEc.addContent(ecEl);
                            }
                           
                           
                           listeUeEl.addContent(ueEl);
                }
                    semestre.addContent(listeUeEl);
                    
                    parcoursAd.addContent(semestre);
                }
               racine.addContent(parcoursAd);
           }
}
    public static void elementCoresponsable(Element racine,int idDiplome){
          Coresponsable co=new Coresponsable();
          Element coresponsables= new Element("coresponsables"); 
          ArrayList<Coresponsable> listCoresp= co.listeCoresponsable(idDiplome);
           Iterator it = listCoresp.iterator(); 
           while(it.hasNext()){
               Element coresponsable= new Element("coresponsable"); 
               Coresponsable corespon= (Coresponsable)it.next();
               Element numHar= new Element("num-harpege").setText(corespon.numHar);
               Element nom= new Element("nom").setText(corespon.nom);
               Element prenom= new Element("prenom").setText(corespon.prenom);
               Element ufr=new Element("ufr");
               Element codeUfr= new Element("code").setText(corespon.codeUfr);
               Element libelle= new Element("libelle").setText(corespon.libelleLongUfr);
               Element libelleCourt= new Element("libelle-court").setText(corespon.libelleCourtUfr);
               ufr.addContent(codeUfr);
               ufr.addContent(libelle);
               ufr.addContent(libelleCourt);
               coresponsable.addContent(numHar);
               coresponsable.addContent(nom);
               coresponsable.addContent(prenom);
               coresponsable.addContent(ufr);
               coresponsables.addContent(coresponsable); 
           }
           racine.addContent(coresponsables);
    }
}

